home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PsL Monthly 1993 December
/
PSL Monthly Shareware CD-ROM (December 1993).iso
/
prgmming
/
dos
/
basic
/
pbtool.exe
/
LABELS.BAS
< prev
next >
Wrap
BASIC Source File
|
1991-08-21
|
7KB
|
184 lines
'----------------------------------------------------------
' PROGRAM: LABELS.BAS PROGRAMMER: A. KELLETT
' DATE-WRITTEN: 08/20/91
' USING POWER BASIC V2.10A
'
' THIS PROGRAM ALLOWS PRINTING LABELS ON 15/16" HIGH BY
' 3.5" WIDE LABELS...
' VERSION: 1.00 Copyright (c) 1991 LAST UPDATED: 08/21/91
'----------------------------------------------------------
VERSION$ = "1.00":LMARGIN = 5
$INCLUDE "CHARS.INC"
$INCLUDE "GETCHAR.INC"
'**** MAIN CODE LOOP FOLLOWING ****
WHILE KEYIN$ <> "0"
CLS
LOCATE 01,20:PRINT "LABEL PRINTING PROGRAM V";VERSION$;" BY A KELLETT."
LOCATE 02,8:PRINT "╓────────────────────────────────────────────────────────────╖"
LOCATE 03,8:PRINT "║ THIS PROGRAM IS DESIGNED TO WORK WITH LABELS WHICH ARE ║"
LOCATE 04,8:PRINT "║ 15/16 INCHES HIGH BY 3.5 INCHES WIDE. IT ALLOWS UP TO ║"
LOCATE 05,8:PRINT "║ FOUR LINES ON EACH LABEL. ║"
LOCATE 06,8:PRINT "╙───────────╥──────────────────────────────────────╥─────────╜"
LOCATE 07,8:PRINT " ║ ║
LOCATE 08,8:PRINT " ║ 0 QUIT (EXIT TO DOS) ║
LOCATE 09,8:PRINT " ║ 1 SET LEFT MARGIN FOR PRINTING ║
LOCATE 10,8:PRINT " ║ 2 ENTER LABEL CONTENTS ║
LOCATE 11,8:PRINT " ║ 3 PRINT ALIGNMENT TEST ║
LOCATE 12,8:PRINT " ║ 4 PRINT THE LABELS ║
LOCATE 13,8:PRINT " ║ ║
LOCATE 14,8:PRINT " ║ PLEASE CHOOSE [0 - 4] ║
LOCATE 15,8:PRINT " ║ ║
LOCATE 16,8:PRINT " ╙──────────────────────────────────────╜
DO
KEYIN$ = UCASE$(INKEY$)
LOOP UNTIL INSTR(" 01234", KEYIN$) > 1
SELECT CASE KEYIN$
CASE "0":CLS
LOCATE 24,1:PRINT "VERSION ";VERSION$;" BY A KELLETT"
CASE "1":GOSUB LEFTMARGIN
CASE "2":GOSUB LABELCONTENTS
CASE "3":GOSUB ALIGNMENT
CASE "4":GOSUB PRINTLABELS
END SELECT
WEND
END
'**** END OF MAIN CODE LOOP ***
'
' THIS MODULE ALLOWS CHANGING THE LEFT MARGIN FROM THE DEFAULT
'--------------------------------------------------------------------
LEFTMARGIN:
CLS:LOCATE 1,20:PRINT "SET THE LEFT MARGIN FOR PRINTING LABELS."
LOCATE 2,5:PRINT USING "THE CURRENT MARGIN IS ##";LMARGIN
LOCATE 3,5:PRINT "ENTER THE NEW MARGIN [0 - 30]:";CHR$(16)
LOCATE 3,38:PRINT CHR$(17)
CALL GETCHAR(3,35,2,NUMBER$):LMARGIN = VAL(INSTRING$):INSTRING$ = ""
IF LMARGIN < 0 OR LMARGIN > 30 THEN
LOCATE 5,5:PRINT "THAT IS AN INVALID MARGIN. WILL USE DEFAULT OF 5."
LMARGIN = 5
DELAY 4
END IF
DELAY 1.5
RETURN
'
' THIS MODULE ALLOWS ENTERING THE LABEL CONTENTS - FOUR LINES MAX
'--------------------------------------------------------------------
LABELCONTENTS:
CLS:LOCATE 1,15:PRINT "ENTER NAME/ADDRESS FOR YOUR LABELS."
LOCATE 2,5:PRINT "SIMPLY PRESS Enter FOR ANY LINES THAT NEED TO BE BLANK."
LOCATE 5,13:PRINT CHR$(16):LOCATE 5,44:PRINT CHR$(17)
LOCATE 5,5:PRINT "LINE 1:":CALL GETCHAR(5,13,30,NORMAL$)
LINE1$ = INSTRING$:INSTRING$ = ""
LOCATE 6,13:PRINT CHR$(16):LOCATE 6,44:PRINT CHR$(17)
LOCATE 6,5:PRINT "LINE 2:":CALL GETCHAR(6,13,30,NORMAL$)
LINE2$ = INSTRING$:INSTRING$ = ""
LOCATE 7,13:PRINT CHR$(16):LOCATE 7,44:PRINT CHR$(17)
LOCATE 7,5:PRINT "LINE 3:":CALL GETCHAR(7,13,30,NORMAL$)
LINE3$ = INSTRING$:INSTRING$ = ""
LOCATE 8,13:PRINT CHR$(16):LOCATE 8,44:PRINT CHR$(17)
LOCATE 8,5:PRINT "LINE 4:":CALL GETCHAR(8,13,30,NORMAL$)
LINE4$ = INSTRING$:INSTRING$ = ""
LOCATE 12,5:PRINT "LABEL CONTENTS HAVE BEEN CHANGED. PRESS ANY KEY TO CONTINUE."
WHILE NOT INSTAT
'*** LOOP UNTIL A KEY IS PRESSED ***
WEND
RETURN
'
' THIS MODULE ALLOWS PRINTING TEST LABELS FOR ALIGNMENT PURPOSES
'--------------------------------------------------------------------
ALIGNMENT:
EXITFLAG$ = ""
WHILE EXITFLAG$ = ""
CLS:LOCATE 1,25:PRINT "PRINT TEST LABELS FOR ALIGNMENT."
LOCATE 2,8:PRINT "LABELS WILL BE PRINTED WITH IN GROUPS OF TWO. PLEASE"
LOCATE 3,8:PRINT "ALIGN THE LABELS BEFORE PRESSING ANY KEY TO BEGIN..."
WHILE NOT INSTAT
'*** LOOP UNTIL A KEY IS PRESSED ***
WEND
FOR I% = 1 TO 2
LPRINT TAB(LMARGIN);"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
LPRINT TAB(LMARGIN);"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
LPRINT TAB(LMARGIN);"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
LPRINT TAB(LMARGIN);"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
LPRINT:LPRINT: '*** SPACE UP BETWEEN LABELS ***
NEXT I%
LOCATE 5,8:PRINT "DO YOU NEED TO PRINT MORE ALIGNMENT LABELS? [Y/N]"
DO
KEYIN$ = UCASE$(INKEY$)
LOOP UNTIL INSTR(" YN", KEYIN$) > 1
IF KEYIN$ = "N" THEN
EXITFLAG$ = "Y"
END IF
WEND
RETURN
'
' THIS MODULE ACTUALLY PRINTS THE LABELS (IF CONTENTS HAVE BEEN ENTERED)
'--------------------------------------------------------------------
PRINTLABELS:
EXITFLAG$ = ""
IF (LINE1$ = "" AND LINE2$ = "" AND LINE3$ = "" AND LINE4$ = "") THEN
CLS:LOCATE 1,25:PRINT "PRINT THE LABELS."
LOCATE 2,8:PRINT "THE CONTENTS OF THE LABELS HAVE NOT BEEN ENTERED. YOU"
LOCATE 3,8:PRINT "SHOULD CHOOSE ENTER LABEL CONTENTS FROM THE MAIN"
LOCATE 4,8:PRINT "MENU AND ENTER THE CONTENTS BEFORE YOU CAN PRINT LABELS."
LOCATE 6,20:PRINT "PRESS ANY KEY TO CONTINUE"
WHILE NOT INSTAT
'*** LOOP UNTIL A KEY IS PRESSED ***
WEND
RETURN
END IF
WHILE EXITFLAG$ = ""
CLS:LOCATE 1,25:PRINT "PRINT THE LABELS."
LOCATE 16,15:PRINT "THE CURRENT LABEL IS: "
LOCATE 18,8:PRINT LINE1$
LOCATE 19,8:PRINT LINE2$
LOCATE 20,8:PRINT LINE3$
LOCATE 21,8:PRINT LINE4$
LOCATE 3,8:
PRINT "ENTER NUMBER OF LABELS TO PRINT [1-999], 0 TO QUIT:";CHR$(16)
LOCATE 3,63:PRINT CHR$(17)
CALL GETCHAR(3,59,3,NUMBER$):NUMLABELS = VAL(INSTRING$):INSTRING$ = ""
IF NUMLABELS = 0 THEN
EXITFLAG$ = " "
DELAY 1.5
RETURN
END IF
IF (NUMLABELS > 999) OR (NUMLABELS < 0) THEN
LOCATE 4,8:PRINT "INVALID NUMBER OF LABELS, MUST BE FROM 1 TO 999"
DELAY 4
RETURN
END IF
LOCATE 4,8
PRINT "PLEASE ALIGN THE LABELS BEFORE PRESSING ANY KEY TO BEGIN..."
WHILE NOT INSTAT
'*** LOOP UNTIL A KEY IS PRESSED ***
WEND
FOR I% = 1 TO NUMLABELS
LPRINT TAB(LMARGIN);LINE1$
LPRINT TAB(LMARGIN);LINE2$
LPRINT TAB(LMARGIN);LINE3$
LPRINT TAB(LMARGIN);LINE4$
LPRINT:LPRINT: '*** SPACE UP BETWEEN LABELS ***
NEXT I%
LOCATE 6,8:PRINT "DO YOU NEED TO PRINT MORE LABELS? [Y/N]"
DO
KEYIN$ = UCASE$(INKEY$)
LOOP UNTIL INSTR(" YN", KEYIN$) > 1
IF KEYIN$ = "N" THEN
EXITFLAG$ = "Y"
END IF
WEND
RETURN